/**
 * 通用 API 请求封装
 * 自动处理 { code, message, data } 的响应结构
 */

interface ApiResponse<T = any> {
  code: number
  message: string
  data: T
}

/**
 * GET 请求
 */
export function useApiGet<T = any>(
  url: string,
  options?: any
) {
  return useFetch<T>(url, {
    ...options,
    method: 'GET',
    // 自动提取 data 字段
    transform: (response: ApiResponse<T>) => {
      if (response?.code === 200) {
        return response.data
      }
      console.error('API Error:', response?.message)
      return null
    }
  })
}

/**
 * POST 请求
 */
export function useApiPost<T = any>(
  url: string,
  body?: any,
  options?: any
) {
  return useFetch<T>(url, {
    ...options,
    method: 'POST',
    body,
    transform: (response: ApiResponse<T>) => {
      if (response?.code === 200) {
        return response.data
      }
      console.error('API Error:', response?.message)
      return null
    }
  })
}

/**
 * 简化版：直接使用（推荐）
 * 
 * 使用示例：
 * const { data: docs } = await useApi('/api/docs/hot', { params: { limit: 6 } })
 * // docs.value 就是实际的数据，无需再访问 .data
 */
export function useApi<T = any>(
  url: string,
  options?: any
) {
  return useFetch<T>(url, {
    ...options,
    transform: (response: ApiResponse<T>) => {
      // 处理标准的 { code, data } 结构
      if (response?.code === 200) {
        return response.data
      }
      console.error('API Error:', response?.message)
      return null
    }
  })
}

